#include "config.h"
#include <stdio.h>
#include <stdlib.h>

int32_t loadConfig(char *dirIp, char *puerto, char* hayQueLoguear){
	FILE *archivo;
	char *buffer, *parametro;


	buffer = malloc(sizeof(char)*200);
	parametro = malloc(sizeof(char)*200);


	 archivo = fopen("config.txt", "r");

	if (archivo == NULL) /*controlo que abrio el archivo*/
	{
		//loguear("Configuracion",GetCurrentProcessId(),GetCurrentThreadId(),GetProcessHeap(),2,"Archivo no encontrado","");
		printf("Error al abrir el archivo de configuracion \n");
		return 0;
	}

	while(!feof(archivo))
	{
		fgets(buffer,100,archivo);
		strcpy(parametro,parametroEnLinea(buffer));
		if(strcmp(parametro,"direccionIp") == 0)
		{
			strcpy(dirIp,valorLinea(buffer));
			printf("dirIp= %s\n", dirIp);
			//loguear("Configuracion",GetCurrentProcessId(),GetCurrentThreadId(),GetProcessHeap(),0,"IP del Servidor =",DireccionIP);
		}
		else if(strcmp(parametro,"puerto") == 0)
		{
			strcpy(puerto,valorLinea(buffer));
			printf("puerto= %s\n", puerto);
			//loguear("Configuracion",GetCurrentProcessId(),GetCurrentThreadId(),GetProcessHeap(),0,"IP del Servidor =",DireccionIP);
		}
		else if(strcmp(parametro,"log") == 0)
		{
			strcpy(hayQueLoguear,valorLinea(buffer));
			printf("%s\n",hayQueLoguear);
		}
		//fgets(buffer,100,archivo);
		else if(strcmp(parametro,"EOF") == 0)
		{

			fclose (archivo);
			free (buffer);
			free(parametro);
			break;

		}
	}
	//fclose (archivo);
	//free (buffer);
	//free(parametro);

	return 1;

}


char *parametroEnLinea(char *cadena) /*DEVUELVE UNA CADENA CON EL PARAMETRO DEL CONFIG */
{
	char *aux;

	aux=cadena;
	aux[posicionCharEnCadena(aux,'=')]='\0';

	return aux;
}

char *valorLinea(char *cadena) /*DEVUELVE UNA CADENA CON LOS CARACTERES DESPUES DEL '=' */
{
	while(*cadena!='=' && *cadena!='\0')
	{
		cadena++;
	}
	cadena++;

	return cadena;
}

int32_t posicionCharEnCadena(char *cadena, const char caracter) /*DEVUELVE UN INTEGER CON LA CANTIDAD DE CARACTERES antes  DEL SEP */
{
	int32_t cont=0;
	while(*cadena!=caracter)
	{
		cont++;
		cadena++;
	}
	return cont;
}
